#include"../head/client.h"
#include <string.h>
#include "../head/transfer.h"
//检查输入的指令
int process_characters(int netfd,char *buf,int pipefd_writet){
    TLVMsg msg;
    bzero(&msg,sizeof(msg));
    char *saveptr;
    char *delimiter=" \n";
    char *token=strtok_r(buf,delimiter,&saveptr);
    //printf("%s\n",token);
    if(!check_command(token)){      //检查指令
        printf("指令错误，请重新输入\n:");

        return 0;
    }
    msg.type=check_command(token);
     
    char **value=(char **)calloc(MAX_USERNAME_LEN,sizeof(char *));
    ERROR_CHECK(value,NULL,"calloc");
    int index=0;
    while(token!=NULL){     // 指令的数据
        token=strtok_r(NULL,delimiter,&saveptr);
        if(token==NULL) break;   
        value[index]=(char *)calloc(MAX_PATH_LEN ,sizeof(char));
        ERROR_CHECK(value[index],NULL,"calloc");
        strncpy(value[index],token, MAX_PATH_LEN -1);
        value[index][MAX_PATH_LEN  - 1] = '\0';
        index++;
    }
    if((index>1 &&  msg.type!=CMD_PWD)||(index>0 && msg.type==CMD_PWD )) { 
        printf("参数太多请重新输入:\n");
        
        for(int i=0;i<index;i++){
            free(value[i]);
        }
        free(value);
        value=NULL;
        return 0;
    }
    if(msg.type==CMD_PWD  ||msg.type==CMD_LOGOUT || msg.type==CMD_LOGIN ){
        //printf("-======\n");
        transmit(netfd,msg.type,strlen("nihao"),"niaho");
        recvfd(netfd,&msg);
        printf("%s\n",msg.value);

    }else{
        if(msg.type==CMD_CD  || msg.type==CMD_LS){
            if(index==0){
                transmit(netfd,msg.type,strlen("gg"),"gg");
                recvfd(netfd,&msg);
                printf("%s\n",msg.value);
                return 0;
            }
        }
        else if(msg.type==CMD_PUTS ){
            transmit(netfd,msg.type,strlen("gg"),"gg");
            transfile_client(value[0],netfd);
            return 0;
        }
        else if( msg.type==CMD_GETS){
            transmit(netfd,msg.type,strlen(value[0]),value[0]);
            recvfile_client(netfd);
            return 0;
        }
        if(index==0){
            printf("参数错误,请重新输入:\n");
            return 0;
        }
        transmit(netfd,msg.type,strlen(value[0]),value[0]);
        recvfd(netfd,&msg);
        printf("%s\n",msg.value);
    }


    /* ssize_t re=send(netfd,&msg.type,sizeof(msg.type),0);//发送指令序号 */
    /* ERROR_CHECK(re,-1,"send"); */

    /* printf("if\n"); */
    /* transmit(netfd,msg.type,sizeof(int),NULL); */


    /* /1* re=send(netfd,&index,sizeof(int),0);//发送指令参数（指令后面的数的个数） *1/ */
    /* /1* ERROR_CHECK(re,-1,"send"); *1/ */
    /* transmit(netfd,0,index,NULL); */

    /* printf("index = %d\n",index); */
    /* for(int i=0;i<index;i++) */
    /* { */   
    /*     /1* bzero(msg.value,sizeof(msg.value)); *1/ */
    /*     /1* msg.value_len=strlen(value[i]); *1/ */
    /*     /1* send(netfd,&msg.value_len,sizeof(int),0); *1/ */
    /*     /1* send(netfd,value[i],strlen(value[i]),0); *1/ */
    /*     /1* printf("%s\n",value[i]); *1/ */
    /*     transmit(netfd,msg.type,strlen(value[i]),value[i]); */
    /*     printf("%s\n",value[i]); */ 
    /* } */
    for(int i=0;i<index;i++){
        if(value[i]!=NULL){
            free(value[i]);
            value[i]=NULL;
        }
    }
    free(value);
    value=NULL;
    return 0;
}    









